package com.coolw.test.prefix.util;

import org.dromara.hutool.core.text.StrUtil;

/**
 * 前缀处理工具类
 *
 * @author coolw
 * @date 2024/5/15 14:46
 */
public final class PrefixUtil {

    /**
     * 合作方代码(机构分配:TEST),合作方生成的编号需要加上前缀,格式:TEST_合作方自定义单号
     * <p>
     * 解决方案:不修改内部生成编号的规则
     * 1.调用机构接口前,将请求数据进行重写,加上前缀LXJ_ {@link #setValue}
     * 2.接收机构响应后,将响应数据进行重写,去掉前缀LXJ_ {@link #getValue}
     */
    private static final String PARTNER_CODE = "TEST";

    /**
     * 业务编号值前缀
     */
    private static final String VALUE_PREFIX = PARTNER_CODE + "_";

    /**
     * 合作方相关编号字段get赋值,去除前缀
     *
     * @param value 原始值
     * @return 去掉前缀后的值
     */
    public static String getValue(String value) {
        if (StrUtil.isBlank(value)) {
            return value;
        }
        if (value.startsWith(VALUE_PREFIX)) {
            return StrUtil.replace(value, VALUE_PREFIX, "");
        }
        return value;
    }

    /**
     * 合作方相关编号字段set赋值,添加前缀
     *
     * @param value 原始值
     * @return 加上前缀后的值
     */
    public static String setValue(String value) {
        if (StrUtil.isBlank(value)) {
            return value;
        }
        if (value.startsWith(VALUE_PREFIX)) {
            return value;
        }
        return VALUE_PREFIX + value;
    }
}
